/*
    Project: OCMF (Operant Chamber Management Framework)
    Version: 1.0
    Author: Copyright (C) 2010, Samuel Delaney & Andrew Harvey
    Licence:
        This file is part of OCMF.

            OCMF is free software: you can redistribute it and/or modify
            it under the terms of the GNU General Public License as published by
            the Free Software Foundation, either version 3 of the License, or
            (at your option) any later version.

            OCMF is distributed in the hope that it will be useful,
            but WITHOUT ANY WARRANTY; without even the implied warranty of
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
            GNU General Public License for more details.

            You should have received a copy of the GNU General Public License
            along with OCMF.  If not, see <http://www.gnu.org/licenses/>.
*/

#include "Counter.h"
#include "Experiment.h"

Counter::Counter(QDomElement counterNode, Action * actionParent) : Action()
{
    //get and set the duration from the xml node
    name = counterNode.attribute("Name");

    //get the boolean string from the xml node
    QString incrementString = counterNode.toElement().attributeNode("Increment").value();

    //set the pulse value from the pulse string
    increment = (incrementString == "True" ? true : false);
}

void Counter::Do()
{
    //determine value of increment
    /*if(increment)
        //increment the experiment counter
        ((Experiment *)Owner()->Owner()->Owner())->Counters[name]++;
    else
        //decrement the experiment counter
        ((Experiment *)Owner()->Owner()->Owner())->Counters[name]--;
*/
    //log result
    Action::WriteResult(ToResultXml());
}

QDomElement Counter::ToResultXml()
{
    QDomElement counterXmlElement;

    //set tag name
    counterXmlElement.setTagName("Counter");

    //set attributes
    counterXmlElement.setAttribute("TimeStamp", TimeStamp.toString(Qt::ISODate));

    counterXmlElement.setAttribute("Name", name);

    if(increment)
        counterXmlElement.setAttribute("Increment", "True");
    else
        counterXmlElement.setAttribute("Increment", "False");

    //Image->Trial->Experiment->Server->
    //counterXmlElement.setAttribute("NewValue", ((Experiment*)Owner()->Owner()->Owner())->Counters[name]);

    //return by value
    return counterXmlElement;
}
